/*
 * Created on Apr 2, 2004
 *
 * Copyright (c) 2004, the JUNG Project and the Regents of the University 
 * of California
 * All rights reserved.
 *
 * This software is open-source under the BSD license; see either
 * "license.txt" or
 * http://jung.sourceforge.net/license.txt for a description.
 */
package edu.uci.ics.jung.algorithms.shortestpath;

import java.util.Map;

/**
 * An interface for classes which calculate the distance between one vertex and
 * another.
 * 
 * @author Joshua O'Madadhain
 */
public interface Distance<V> {
	/**
	 * Returns the distance from the <code>source</code> vertex to the
	 * <code>target</code> vertex. If <code>target</code> is not reachable from
	 * <code>source</code>, returns null.
	 */
	Number getDistance(V source, V target);

	/**
	 * <p>
	 * Returns a <code>Map</code> which maps each vertex in the graph (including
	 * the <code>source</code> vertex) to its distance (represented as a Number)
	 * from <code>source</code>. If any vertex is not reachable from
	 * <code>source</code>, no distance is stored for that vertex.
	 */
	Map<V, Number> getDistanceMap(V source);
}
